# -*- coding:utf-8 -*-

from __future__ import unicode_literals

from peewee import Model, SqliteDatabase, CharField, FloatField, IntegerField, ForeignKeyField, PrimaryKeyField

conexao = SqliteDatabase('banco.db', threadlocals=True)

class PrimaryKeyAutoIncrementField(PrimaryKeyField):
    template_extra = 'AUTOINCREMENT'

class Professor(Model):
    id = PrimaryKeyAutoIncrementField()
    usuario = CharField()
    senha = CharField()

    class Meta:
        database = conexao

class Disciplina(Model):
    id = PrimaryKeyAutoIncrementField()
    nome = CharField()
    professor = ForeignKeyField(Professor)
    peso_prova = FloatField()
    peso_trabalho = FloatField()
    quantidade_provas = IntegerField()
    quantidade_trabalhos = IntegerField()
    class Meta:
        database = conexao

class Aluno(Model):
    id = PrimaryKeyAutoIncrementField()
    nome = CharField()
    ra = CharField()

    class Meta:
        database = conexao

class AlunoDisciplina(Model):
    id = PrimaryKeyAutoIncrementField()
    aluno = ForeignKeyField(Aluno)
    disciplina = ForeignKeyField(Disciplina)

    class Meta:
        database = conexao

class Aula(Model):
    id = PrimaryKeyAutoIncrementField()
    data = CharField()
    disciplina = ForeignKeyField(Disciplina)

    class Meta:
        database = conexao

class AlunoAula(Model):
    id = PrimaryKeyAutoIncrementField()
    aluno = ForeignKeyField(Aluno)
    aula = ForeignKeyField(Aula)
    disciplina = ForeignKeyField(Disciplina)

    class Meta:
        database = conexao

class Atividade(Model):
    id = PrimaryKeyAutoIncrementField()
    nome = CharField()
    disciplina = ForeignKeyField(Disciplina)
    tipo = IntegerField()

    class Meta:
        database = conexao

class Nota(Model):
    id = PrimaryKeyAutoIncrementField()
    aluno = ForeignKeyField(Aluno)
    atividade = ForeignKeyField(Atividade)
    valor = FloatField()

    class Meta:
        database = conexao
#Professor.create_table()
#Disciplina.create_table()
#Aluno.create_table()
#AlunoDisciplina.create_table()
#Aula.create_table()
#AlunoAula.create_table()
#Atividade.create_table()
#Nota.create_table()